package com.safeneeds.util.other;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Random;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.safeneeds.util.date.DateUtil;
import com.safeneeds.util.log.ALogFactory;

import config.Constant;

/**
 * 上传服务类
 * 
 * @version 1.0
 * @date 2013-5-29
 * @author 夏章锐
 */
public class Upload {

	/**
	 * 文件的上传
	 * 
	 * @param file
	 *            ： 文件
	 * @param path
	 *            ：储存位置的路径
	 * @param filesName
	 *            ：文件的名字
	 * @return
	 */
	public static File uploadTo(File file, String path, String fileName)
			throws IOException {

		File destFile = new File(path, fileName);//输出文件,fileFileName由struts2自动注入
		InputStream is = new FileInputStream(file);// 构造输入字节流

		if (destFile.exists()) {
			ALogFactory.getLog().info("文件已存在！");
			return null;
		} else {
			int length = 0;
			byte[] buffer = new byte[1024];
			OutputStream os = new FileOutputStream(destFile);
			
			try {
				while (0 < (length = is.read(buffer))) {
					os.write(buffer, 0, length);
				}
			} catch (IOException e) {
				ALogFactory.getLog().warn("文件上传时文件流出错", e);
			} finally {
				if (null != os) {
					os.close();
				}
				if (null != is) {
					is.close();
				}
			}

			return destFile;

		}
	}
	
	/**
	 * 获取文件类型
	 * @return
	 */
	public static String getFileType(File file){
		String fileName = file.getName();
		if (fileName.indexOf(".") != -1) {
			return fileName.substring(fileName.lastIndexOf(".") + 1);
		}
		
		return "";
	}
	
	/**
	 * 获取文件类型
	 * @return
	 */
	public static String getFileType(String fileName){
		if (fileName.indexOf(".") != -1) {
			return fileName.substring(fileName.lastIndexOf(".") + 1);
		}
		
		return "";
	}
	
	/**
	 * 获取文件类型
	 * @return
	 */
	public static String getFileTypeFromContentType(String contentType){
		if (contentType.indexOf("/") != -1) {
			return contentType.substring(contentType.lastIndexOf("/") + 1);
		}
		
		return "";
	}

	
}
